BIP459: Add FullAgg (DahLIAS) module - #1754
Conversation
d962f9b to
13a34e4
Compare
|
Concept ACK |
ab6fdeb to
0c403c9
Compare
|
The last commit here now is implementing the code sharing between the musig and the fullagg model. That is one of the first questions I have when reviewers will take a closer look here: Do we want to do it this way? And do we event want to do this at all? I think it's pretty good but also the amount of LOC saving has been a bit underwhelming at the end. A second thing that I changed and that I would be interested in high-level feedback on: I realized that the fullagg module really doesn't need any of the Schnorr module code, it just depends on extrakeys. I fixed this in the config where I still had the schnorr module as dependency of the fullagg module. However, in practical terms they will likely always be active together and it's also a bit awkward that I still have the module named |
The naming of these functions suggested they should be moved to group.h but this didn't seem practical since these functions depended on eckey.h internally which is higher level than group.h.
|
The latest push is a rebase but also does a bunch of renaming and rewording in response to the naming discussion in the BIP, e.g. dropping the "FullAgg of Schnorr signatures" framing. |
|
Split out the first commit which is a pure refactor: #1915 |
…roup bfd40bd refactor: Rename privkey to seckey in eckey helpers (Fabian Jahr) d8ee6e6 refactor: Move parsing helpers from musig to group (Fabian Jahr) 2577fb1 refactor: Move pubkey parsing and serialization from eckey to group (Fabian Jahr) Pull request description: These two helpers, `secp256k1_musig_ge_serialize_ext` and `secp256k1_musig_ge_parse_ext`, aren't really musig-specific. They (de)serialize a group element that can also be the point at infinity. This moves them to `eckey` as `secp256k1_eckey_serialize_ext` and `secp256k1_eckey_parse_ext`. They can't move further down to group.h because they depend on other `eckey` functions internally. There should be no functional change here. I stumbled upon this while working on #1754 where I would want to reuse these helpers in that module, so it is split out of that. But the change seems to make sense on its own as well, so I wouldn't consider this prep work alone. ACKs for top commit: theStack: ACK bfd40bd real-or-random: utACK bfd40bd Tree-SHA512: 9e6445e480495baaf14b6d435a513d465116ae517b47b3f76c317e6aa70e9f1bcc0ce3f92498e008d5aa38d8fbeebe4fdf69a0bf90b05da9da084242b9170b01
This PR adds a FullAgg module implementing full aggregation of BIP 340 signatures using the interactive aggregate signature scheme (DahLIAS).
The implementation follows the BIP459.